#include<iostream>
#include<algorithm> 
using namespace std;
const int N=210;
int dist[N][N];
int n,m,k;

void flyd(){
	for(int k=0;k<n;k++){
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				dist[i][j]=min(dist[i][k]+dist[k][j],dist[i][j]);
			}
		}
	}
	
}

int main(){
	while(cin>>n>>m){
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				if(i==j)dist[i][j]=0;
				else dist[i][j]=0x3f3f3f3f;
			}
		}
		
		
		for(int i=0;i<m;i++){
			int a,b,c;
			cin>>a>>b>>c;
			dist[b][a]=dist[a][b]=min(dist[a][b],c);
		}
		flyd();
			int s,t;
			cin>>s>>t;
			if(dist[s][t]>0x3f3f3f3f/2)cout<<-1<<endl;
			else cout<<dist[s][t]<<endl;
		
		
	}
	
	
	return 0;
}
